package cn.cqie.attendance.manager.dao;

import cn.cqie.attendance.common.util.Page;
import cn.cqie.attendance.manager.pojo.AdminGroup;
import cn.cqie.attendance.manager.pojo.AdminStudent;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 697
 * @date 2021/6/22 10:44
 */
@Mapper
public interface AdminGroupDao {

    /**
     * 查看未结业小组信息
     * @return
     */
    List<AdminGroup> queryGroupInfoByStatusAndGroupName(AdminGroup group);


    /**
     * 新建分组
     * @param group 分组信息
     * @return
     */
    int addGroup(AdminGroup group);


    /**
     * 根据分组名称查询分组数量
     * @param adminGroup
     * @return
     */
    int queryCountGroupInfoByGroupName(@Param("adminGroup")AdminGroup adminGroup);

    /**
     * 判断更新的小组是否结业
     * @param groupId
     * @return
     */
    int queryGroupStatusFalse(@Param("groupId") Integer groupId);


    /**
     * 更新分组信息
     * @param group 分组信息
     * @param groupId
     * @return
     */
    int updateGroupInfoById(@Param("group")AdminGroup group,@Param("groupId")Integer groupId);


    /**
     * 根据分组ID删除分组信息
     * @param groupId 分组ID
     * @return
     */
    int deleteGroupById(@Param("groupId")Integer groupId);


    /**
     * 根据分组ID查询分组学生信息 模糊 可组合查询
     * @param student 学生
     * @param groupId 分组ID
     * @return
     */
    List<AdminStudent> queryStudentByGroupIdCombination(@Param("student")AdminStudent student,@Param("groupId")Integer groupId);


    /**
     * 更换学生分组，支持批量更新
     * @param groupId
     * @param stuId
     * @return
     */
    int updateStudentGroupById(@Param("groupId")Integer groupId,@Param("stuId")Integer stuId);


    /**
     * 查询未结业班级的所有学生
     * @param student 学生
     * @return
     */
    List<AdminStudent> qureyAllStudentNoGraduation(@Param("student")AdminStudent student);





    /**
     * 小组新增成员
     * @param groupId 小组ID
     * @param stuId　学生ID
     * @return
     */
    int addStudentToGroup(@Param("groupId")Integer groupId,@Param("stuId")Integer stuId);


    /**
     * 删除小组某个学生 支持批量删除
     * @param stuId 学生ID
     * @return
     */
    int deleteStudentByGroupById(@Param("stuId")Integer stuId);


}
